2.透過程序來添加 Fragment
官方文件表示,首先需要在 Activity 的佈局(layout)增加FragmentContainerView
標籤來提供一個 Fragment 容器。
<!-- res/layout/example_activity.xml -->
<androidx.fragment.app.FragmentContainerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
與 1.透過佈局 XML 來添加 Fragment 方式的差異在於,這邊不會使用android:name
屬性(attribute)。因此,不會有指定 Fragment 的自動實例化。取而代之的是,使用FragmentTransaction
來實例化 Fragment,並將 Fragment 加入 Activity 佈局。
當 Activity 運作中(running),你可以進行針對 Fragment 的添加、移除及替換操作。在FragmentActivity
,你可以獲取FragmentManager
實例。FragmentManager
被用來建立一個FragmentTransaction
。之後,你可以在 Activity 的onCreate()
方法,使用FragmentTransaction.add()
傳遞佈局容器的ViewGroup
ID 及想添加的 Fragment class並提交(commit)此任務(transaction),來實例化 Fragment。
官方範例如下:
class ExampleActivity : AppCompatActivity(R.layout.example_activity) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (savedInstanceState == null) {
supportFragmentManager.commit {
setReorderingAllowed(true)
add<ExampleFragment>(R.id.fragment_container_view)
}
}
}
}
參考資料